package com.hunk.core.auth.service;

import java.io.Serializable;

import com.hunk.utils.exception.CustomizeException;

/**
 * Description :<br>
 * 
 * @author HunkDeng
 * @since 2013-4-30
 * @param <T>
 * @param <ID>
 */
public interface BaseService<T, ID extends Serializable> {
    
    /**
     * 保存用户
     * 需要update方法，不然并发中如果用户被删除，而另一个用户修改数据则会变成新增情况
     * @param user
     */
    T save(T entity);
    
    /**
     * 根据id查找用户
     * @param id
     * @return
     */
    T findById(ID id) throws NotFoundException;
    
    /**
     * 根据ID删除用户
     * @param id
     */
    void deleteById(ID id);  
    
    /**
     * 根据ID删除用户
     * @param id
     */
    void delete(T entity) throws NotFoundException;
    
    public class NotFoundException extends CustomizeException {

		private static final long serialVersionUID = 3242577239896160291L;

		public NotFoundException(String string) {
			super();
		}
    	
    }
}